package cat.music.ut.comm.http

import java.io.File

object FileNameSanitizer {

    // 定义非法字符的正则表达式
    private val illegalCharsRegex = Regex("[\\\\/:*?\"<>|]")

    /**
     * 移除文件名中的非法字符
     * @param input 原始文件名
     * @return 清理后的文件名
     */
    fun sanitize(input: String?): String {
        if (input == null) return "${System.currentTimeMillis()}"
        return input.replace(illegalCharsRegex, "")
    }

    /**
     * 移除非法字符并可选添加默认文件扩展名
     * @param input 原始文件名
     * @param defaultExtension 默认扩展名（可选）
     * @return 清理后的文件名，带扩展名
     */
    fun sanitizeWithExtension(input: String, defaultExtension: String? = null): String {
        val sanitized = sanitize(input).trim()
        return if (!defaultExtension.isNullOrBlank() && !sanitized.endsWith(".$defaultExtension")) {
            "$sanitized.$defaultExtension"
        } else {
            sanitized
        }
    }
    fun getAvailableFilePath(originalPath: String): String {
        val originalFile = File(originalPath)

        // 如果文件不存在，直接返回
        if (!originalFile.exists()) return originalPath

        val parent = originalFile.parent ?: ""
        val name = originalFile.nameWithoutExtension
        val ext = originalFile.extension

        var index = 2
        var newFile: File

        do {
            val newName = "$name$index.${ext}"
            newFile = File(parent, newName)
            index++
        } while (newFile.exists())

        return newFile.absolutePath
    }
}
